<?php


namespace app\controller;


use app\model\User;
use PHPMailer\PHPMailer\PHPMailer;
use think\facade\Cache;
use think\facade\Session;
use think\facade\View;

class Register
{
    //页面跳转
    public function toRegister(){
        // 模板输出
        return View::fetch('index');
    }
    //注册
    public function register(){
        $register=request()->post();
        $email = request()->post('email');
        $code =request()->post('code');
        $username=request()->post('username');
        //==
        if (Cache::get($email)!=$code){
            View::assign('msg',"验证码错误");
            return View::fetch('index');
        }
        if (User::where('email',$email)->find()){
            View::assign('msg',"邮箱已存在");
            return View::fetch('index');
        }

        //注册成功
        User::create($register);
//        Session::delete($email);
        Cache::delete($email);
        return redirect('/toLogin');
    }


    //邮件发送
    public function email()
    {
        $toemail = request()->post('email');//这里写的是收件人的邮箱
        if (Cache::get("email".$toemail)){
            return '请稍后';
        }
        $code = rand(10000,99999);//随机验证码
        $mail = new Phpmailer();
        $mail->isSMTP();// 使用SMTP服务（发送邮件的服务）
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "f3171785062@163.com";// 申请了smtp服务的邮箱名（自己的邮箱名）
        $mail->Password = "KWKORLYFGIXFLUOH";// 发送方的邮箱密码，不是登录密码,是qq的第三方授权登录码,要自己去开启（之前叫你保存的那个密码）
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式,
        $mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587
        $mail->setFrom("f3171785062@163.com");// 设置发件人信息，如邮件格式说明中的发件人,
        $mail->addAddress($toemail);// 设置收件人信息，如邮件格式说明中的收件人
        $mail->Subject = "国家机密";// 邮件标题
        $mail->Body = "您的验证码是:(".$code."),打死也不告诉别人,这可是国家最高机密！！！(时效5分钟)";// 邮件正文

        if (!$mail->send()) {// 发送邮件
            echo "Message could not be sent.";
            echo "Mailer Error: " . $mail->ErrorInfo;// 输出错误信息
        } else {
            // 缓存在3000秒之后过期
            Cache::set($toemail, $code, 3000);
            Cache::set("email".$toemail, $code, 60);
            return '发送成功';
        }
    }

}